REST API টেস্টিং হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা API এর কার্যকারিতা এবং নিরাপত্তা নিশ্চিত করে। এই প্রজেক্টে, আমরা একটি RESTful API তৈরি করব এবং সেই API এর উপর টেস্টিং করার জন্য কিছু টেস্ট কেস তৈরি করব। এটি বিভিন্ন টুল এবং প্রযুক্তির সাহায্যে করা হবে, যেমন Postman, JUnit, এবং REST Assured।
প্রজেক্টের উদ্দেশ্য
- RESTful API তৈরি করা।
- API এর বিভিন্ন এন্ডপয়েন্ট টেস্ট করা।
- সফটওয়্যার উন্নয়নের সময় API এর গুণগত মান নিশ্চিত করা।
1. RESTful API তৈরি করা
এই প্রজেক্টে আমরা একটি সাধারণ Spring Boot অ্যাপ্লিকেশন তৈরি করব, যা একটি RESTful API সরবরাহ করবে।
Dependency Configuration
Maven pom.xml ফাইলে প্রয়োজনীয় ডিপেন্ডেন্সি যুক্ত করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Sample REST API Controller
@RestController
@RequestMapping("/api/users")
public class UserController {
private List<User> users = new ArrayList<>();
@GetMapping
public List<User> getAllUsers() {
return users;
}
@PostMapping
public User createUser(@RequestBody User user) {
users.add(user);
return user;
}
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable int id) {
if (id < users.size()) {
return ResponseEntity.ok(users.get(id));
} else {
return ResponseEntity.notFound().build();
}
}
}
2. API টেস্টিং কেস তৈরি করা
Postman ব্যবহার করে API এর উপর বিভিন্ন টেস্ট কেস তৈরি করুন। নিচে কিছু সাধারণ টেস্ট কেস উল্লেখ করা হলো:
1. GET /api/users
- উদ্দেশ্য: সমস্ত ব্যবহারকারীর তথ্য পাওয়া।
- প্রক্রিয়া:
- Postman-এ GET রিকোয়েস্ট তৈরি করুন।
- URL:
http://localhost:8080/api/users
- প্রত্যাশিত ফলাফল: 200 OK
2. POST /api/users
- উদ্দেশ্য: নতুন ব্যবহারকারী তৈরি করা।
- প্রক্রিয়া:
- Postman-এ POST রিকোয়েস্ট তৈরি করুন।
- URL:
http://localhost:8080/api/users - Body:
{
"name": "John Doe",
"email": "john@example.com"
}
- প্রত্যাশিত ফলাফল: 200 OK, Response Body-তে নতুন ব্যবহারকারীর তথ্য।
3. GET /api/users/{id}
- উদ্দেশ্য: নির্দিষ্ট ব্যবহারকারীর তথ্য পাওয়া।
- প্রক্রিয়া:
- Postman-এ GET রিকোয়েস্ট তৈরি করুন।
- URL:
http://localhost:8080/api/users/0(যদি প্রথম ব্যবহারকারী চান)
- প্রত্যাশিত ফলাফল: 200 OK, Response Body-তে প্রথম ব্যবহারকারীর তথ্য।
4. GET /api/users/{id} (Invalid ID)
- উদ্দেশ্য: অকার্যকর ID এর জন্য 404 প্রাপ্তি।
- প্রক্রিয়া:
- Postman-এ GET রিকোয়েস্ট তৈরি করুন।
- URL:
http://localhost:8080/api/users/10(যদি কোনো ব্যবহারকারী না থাকে)
- প্রত্যাশিত ফলাফল: 404 Not Found
3. Automation Testing with REST Assured
API টেস্টিং অটোমেট করতে REST Assured লাইব্রেরি ব্যবহার করা যেতে পারে। নিচে একটি উদাহরণ দেওয়া হলো:
Maven Dependency
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
Sample Test Case with JUnit
java
Copy code
import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class UserApiTest {
@Test
public void testGetAllUsers() {
given()
.when()
.get("/api/users")
.then()
.statusCode(200)
.body("", hasSize(greaterThan(0))); // Check if the list is not empty
}
@Test
public void testCreateUser() {
String requestBody = "{\"name\": \"John Doe\", \"email\": \"john@example.com\"}";
given()
.header("Content-Type", "application/json")
.body(requestBody)
.when()
.post("/api/users")
.then()
.statusCode(200)
.body("name", equalTo("John Doe"));
}
@Test
public void testGetUserById() {
given()
.when()
.get("/api/users/0")
.then()
.statusCode(200)
.body("name", equalTo("John Doe")); // Replace with expected name
}
@Test
public void testGetUserByInvalidId() {
given()
.when()
.get("/api/users/10")
.then()
.statusCode(404);
}
}
উপসংহার
এই REST API টেস্টিং প্রজেক্টে, আমরা একটি সাধারণ RESTful API তৈরি করেছি এবং Postman ও REST Assured ব্যবহার করে API এর উপর টেস্ট কেস তৈরি করেছি। এটির মাধ্যমে API এর কার্যকারিতা পরীক্ষা করা হয় এবং টেস্টিং প্রক্রিয়ার গুণগত মান নিশ্চিত করা হয়। এই ধরণের প্রকল্পগুলি সফটওয়্যার উন্নয়নে গুরুত্বপূর্ণ ভূমিকা পালন করে, যা কোডের মান বজায় রাখতে সহায়ক।
Read more